<html>
    <head>
        <title> Aps.net core  客户端包管理器</title>
    </head>
    <body>
        <script>
            // asp.net core 客户端包管理器

                    /*
                            ABP 可以与任何类型的客户端包管理系统一起使用。

                            你甚至可以决定不使用包管理系统并手动管理你的依赖。

                            但是，ABP最适合NPM/Yarn。  默认情况下，内置模块配置为与NPM/Yarn一起使用。

                            最后，我们建议在NPM上使用Yarn，因为它更快、稳定并且与NPM兼容。
                    */

                    /*
                        一、@ABP NPM包


                                   1、标准包：

                                                ABP是一个模块化平台。每个开发人员都可以创建模块，并且模块应该以兼容和稳定状态协同工作。

                                                一个挑战是依赖NPM包的版本。

                                                如果两个不同的模块使用相同的JavaScript库但其版本不同（并且可能不兼容）怎么办。

                                                为了解决版本控制问题，我们创建了一个标准包集，这些包依赖于一些常见的第三方库。

                                                一些示例包是@abp/jquery、@abp/bootstrap和@abp/font-awes。您可以从GitHub存储库中查看包列表。


                                            ★、标准包的好处：

                                                    ①、它基于包的标准版本。基于这个包是安全地包，因为所有的模块都依赖于相同的版本。
                                                    
                                                    ②、它包含从node_modules文件夹到wwwroot/libs文件夹的映射复制库资源（js、css、img…文件）。（有关详细信息，请参阅映射库资源部分。）



                                                依赖标准包很容易，只需像往常一样将其添加到您的pack. json文件中。
                                                
                                                例子：

                                                    {
                                                        ...
                                                        "dependencies": {
                                                            "@abp/bootstrap": "^1.0.0"
                                                        }
                                                    }

                                                建议依赖标准包，而不是直接依赖第三方包。

                                   2、安装包  Package Installation

                                                在依赖于NPM包之后，您应该做的就是从命令行运行yarn命令来安装所有包及其依赖项：


                                                    "yarn"

                                                或者，您可以使用 npm install，但建议使用Yarn v1.22+（不是v2），如前所述。


                                    3、第三方包

                                            如果您需要不在标准包集中的第三方NPM包，您可以在Github存储库上创建拉取请求。

                                            遵循这些规则的拉取请求：

                                                ①、对于NPM上的package-name，包名称应命名为@abp/package-name（例如：@abp/bootstrap用于bootstrap包）。

                                                ②、它应该是包的最新稳定版本。

                                                ③、它应该只依赖于单个第三方包。它可以依赖于多个@abp/*包。

                                                ④、该包应包含一个abp.resourcemapping.js文件，其格式如映射库资源部分中定义的那样。此文件应仅映射依赖包的资源。

                                                ⑤、您还需要为您创建的包创建包贡献者（bundle contributor）。

                    */

                    /*
                        二、前端包资源映射 (node_modules 映射到 wwwroot/libs 文件夹的资源映射)

                                    使用NPM包和NPM/Yarn工具是客户端库的事实标准。

                                    PM/Yarn工具在Web项目的根文件夹中创建一个 "node_modules" 文件夹。

                                    下一个挑战是将所需资源（js、css、img…文件）从node_modules复制到wwwroot文件夹内的文件夹中，以使客户端/浏览器可以访问它。

                                    ABP CLI的 "abp install-libs"  命令将资源从node_modules复制到 wwwroot/libs文件夹。

                                    每个标准包（请参阅@ABP NPM包部分）为其自己的文件定义映射。因此，大多数时候，您只配置依赖项。

                                    启动模板已配置为开箱即用。本节将解释配置选项。

                                
                                1、资源映射定义文件    Resource Mapping Definition File 

                                            模块应定义一个名为 "abp.resourcemapping.js" 的JavaScript文件，其格式如下例所示：

                                                    module.exports = {
                                                            aliases: {
                                                                "@node_modules": "./node_modules",
                                                                "@libs": "./wwwroot/libs"
                                                            },
                                                            clean: [
                                                                "@libs",
                                                                "!@libs\**\foo.txt"   // 本行代码中 \应该是正斜杠
                                                            ],
                                                            mappings: {
                                                                
                                                            }
                                                    }

                                                ①、 "aliase" 节点部分定义了可以在映射路径中使用的标准别名（占位符）。@node_modules和@libs是必需的（标准包），您可以定义自己的别名以减少重复。
                                                
                                                ②、 "clean" 节点部分是在复制文件之前要清理的文件夹列表。

                                                        启用了全局匹配和否定，因此您可以微调要删除和保留的内容。
                                                        
                                                        上面的示例将清理./wwwroot/libs中的所有内容，但保留任何foo.txt文件。

                                                ③、 "mappings" 节点是要复制的文件/文件夹的映射列表。此示例不会复制任何资源本身，而是依赖于标准包。


                                                        下面显示了一个示例映射配置：

                                                            mappings: {
                                                                "@node_modules/bootstrap/dist/css/bootstrap.css": "@libs/bootstrap/css/",
                                                                "@node_modules/bootstrap/dist/js/bootstrap.bundle.js": "@libs/bootstrap/js/",
                                                                "@node_modules/bootstrap-datepicker/dist/locales/*.*": "@libs/bootstrap-datepicker/locales/",
                                                                "@node_modules/bootstrap-v4-rtl/dist/**\*": "@libs/bootstrap-v4-rtl/dist/"   // 此行反斜杠应为正斜杠
                                                            }


                                2、安装标准库  install-libs 

                                              确配置abp.resourcemapping.js文件后，您可以从命令行运行以下ABP CLI命令：
                                              
                                                  "abp install-libs"

                                            当您运行此命令时，所有包都会将自己的资源复制到wwwroot/libs文件夹中。

                                            仅当您更改pack. json文件中的依赖项时，才需要运行abp install-libs。

                                        



                    */
        </script>
    </body>
</html>